#ifndef QUEUE_HPP
#define QUEUE_HPP

class OutOfRange {
};

class LengthError {

};

template < class T, class Container = deque<T> >
class Queue {
	
public:
	typename Container::value_type value_type;
	typename Container::size_type size_type;

	explicit queue ( const Container& ctnr = Container() ) {};
	bool empty () { return c.empty(); }
	size_type size() { return c.size(); }

	value_type& front ( ) { return c.front(); }
	const value_type& front ( ) const { return c.front(); }

	value_type& back ( ) { return c.back(); }
	const value_type& back ( ) const { return c.back(); }

	void pop () { c.pop(); }

	void push ( const T& x ) { c.push_back(x); }

private:
	Container c;
};

#endif
